-diff -ur gtk+-3.2.2/modules/printbackends/cups.orig/gtkcupsutils.c gtk+-3.2.2/modules/printbackends/cups/gtkcupsutils.c
---- gtk+-3.2.2/modules/printbackends/cups.orig/gtkcupsutils.c 2011-11-07 19:47:37.000000000 +0100
-+++ gtk+-3.2.2/modules/printbackends/cups/gtkcupsutils.c 2011-11-23 11:50:56.413671604 +0100
-@@ -265,6 +265,10 @@
- else if (request->type == GTK_CUPS_GET)
- get_states[request->state] (request);
-
-+ if (gtk_cups_result_is_error (request->result)) {
-+ request->state = GTK_CUPS_REQUEST_DONE;
-+ }
-+
- if (request->attempts > _GTK_CUPS_MAX_ATTEMPTS &&
- request->state != GTK_CUPS_REQUEST_DONE)
- {
-@@ -918,8 +922,8 @@
- * The callback sets cups_password to NULL to signal that the
- * password has been used.
- */
--static char *cups_password;
--static char *cups_username;
-+static char *cups_password = NULL;
-+static char *cups_username = NULL;
-
- static const char *
- passwordCB (const char *prompt)
-@@ -955,6 +959,7 @@
-
- if (request->password_state == GTK_CUPS_PASSWORD_APPLIED)
- {
-+ request->poll_state = GTK_CUPS_HTTP_IDLE;
- request->password_state = GTK_CUPS_PASSWORD_NOT_VALID;
- request->state = GTK_CUPS_POST_AUTH;
- request->need_password = TRUE;
-@@ -972,7 +976,6 @@
- {
- if (request->password_state == GTK_CUPS_PASSWORD_NONE)
- {
-- cups_password = g_strdup ("");
- cups_username = request->username;
- cupsSetPasswordCB (passwordCB);
-
-@@ -984,6 +987,7 @@
- /* move to AUTH state to let the backend
- * ask for a password
- */
-+ request->poll_state = GTK_CUPS_HTTP_IDLE;
- request->state = GTK_CUPS_POST_AUTH;
- request->need_password = TRUE;
-
-@@ -1247,6 +1287,7 @@
-
- if (request->password_state == GTK_CUPS_PASSWORD_APPLIED)
- {
-+ request->poll_state = GTK_CUPS_HTTP_IDLE;
- request->password_state = GTK_CUPS_PASSWORD_NOT_VALID;
- request->state = GTK_CUPS_GET_AUTH;
- request->need_password = TRUE;
-@@ -1264,7 +1311,6 @@
- {
- if (request->password_state == GTK_CUPS_PASSWORD_NONE)
- {
-- cups_password = g_strdup ("");
- cups_username = request->username;
- cupsSetPasswordCB (passwordCB);
-
-@@ -1284,6 +1331,7 @@
- /* move to AUTH state to let the backend
- * ask for a password
- */
-+ request->poll_state = GTK_CUPS_HTTP_IDLE;
- request->state = GTK_CUPS_GET_AUTH;
- request->need_password = TRUE;
-
-@@ -1324,7 +1385,7 @@
- return;
- }
-
-- request->state = GTK_CUPS_GET_SEND;
-+ request->state = GTK_CUPS_GET_CONNECT;
- request->last_status = HTTP_CONTINUE;
-
- return;